import math
import random
import string

'''
remove()直接填入参数值，就可以删除该元素，但是只能删除第一个
pop() 是根据索引
del 是关键字，删除索引范围内的元素
'''

def fun1():
    a = [1, 2, 3, 4]
    # a.reverse()
    print(a[::-2])

def fun2():
    num = '12345321'

    flag = True
    mid = len(num) // 2
    i = 0
    while i < mid:
        if num[i] != num[0 - i - 1]:
            flag = False
        i += 1
    if flag:
        print('y')
    else:
        print('N')

'''
1.list里的元素不一定是相同的，可以int，str混杂在一起，但是如果不都是str字符类型，是没法用join的，否则报错
必须每个元素都转化成字符串，才可以使用join

2.len()计算list长度的时候只能看第一层元素的个数，即使子元素是list，但是也看做是一个长度单位

3.list.sort()跟join有点类似，使用的前提必须是list内的元素是同一种类型，否则报错
而且，如果list内都是子list，那么按照子list的第一元素大小进行排序

'''
def fun3():
    x = [1,2,3,'ef']
    z = []
    for y in x:
        z.append(str(y))
    print(",".join(z))

    l = [1,2,3,[11,12,13],[4,5,6],[7,8,9]]
    #l1 = [[0,12,1],[4,15,6],[17,8,9]]
    # l1 = [42,5,23,566]
    l1 = ['a','v','g','d']
    l1.sort(reverse=True)
    print(l1)

'''

    1.定义集合可以直接用set() 或者 {},但是{}内是单个的元素
    2.定义字典可以用dict() 或者 {},但是{}内必须是键值对
'''
def fun4():
    lst = [1, 'wef', 4.3]
    t = (343, 'egr', [3, 4])
    d = {'A': 89, 'B': 56}  #
    d1 = {1, 2, 31, 4, 51, 6}

    for i in d1:
        print(i)

    c = 3.14

    print(t[0])

    str = '123456'
    print(str[1:-1])
    f = 'y' < 'x' == False
    print(f)

'''
答案是4.0,不是4，因为python /是默认保留一位小数，只有//整除才是整数
'''

def fun5():
    print(32/4*5%3**2)
    print(5*4)

'''
extend()是直接合并两个list
'''
def fun6():
    l1 = [1,2,3,4,5]
    l2 = [6,7,8,9]
    print(l1.extend(l2))
    print(l1)

def fun7():
    '''
    remove只会移除第一个匹配到的元素
    '''
    str = ['f', 'g', 'h', 'h', 'h', 'h']
    for ch in str:
        if ch == 'h':
            str.remove(ch)
    print(str)

'''
1.set()只自动去重；是无序的，也就是说每次print数据是无序的

'''
def fun8():
    myset = set('guodddsheng')
    print(myset)

'''
字典的key可以是数字，字符，元组，但是不能是List
函数内部可以再定义函数，但是只能在内部可见
'''
def fun9():
    mydict = {(1,2):[3,4],(3,4):7}
    print(mydict[(1, 2)])
    def fun10():
        print('fun10')
    fun10()

'''
可变参数用的是元组进行存储的
'''
def fun11(p1,*p2):
    print(p1)
    print(p2)

def fun111(p1,**p2):
    print(p1)
    print(p2)

'''
int float 是值传递，List，dict是址传递
'''
def fun12(pint,pfloat,plist,ptuple,pdict):
    pint -=1
    pfloat -=5
    plist.append(33)
    #ptuple[5] = 10
    pdict[4] = 44
    # print(pint)
    # print(pfloat)
    # print(plist)
    # print(ptuple)
    # print(pdict)

def fun13(x,y=0,z=0):
    pass

def fun14(num):
    num *=2

def fun15():
    print([1, 2, 3] * 3)
    x = 3 == 3, 5
    print(x)

'''
变量内容一改变，变量内存地址就会改变
'''
def fun16():
    x = 3
    print(id(x))
    x = [1, 2, 3]
    print(id(x))

'''
dict的相关操作
'''
def fun17():
    mydict = {1:'guo',2:'dong'}
    mydict[3] = 'sheng'

    print(list(mydict))
    print(mydict.get(3))
    print(list(mydict.items()))
    k,v = zip(*mydict.items())
    print(k,v)
    print(list(mydict.keys()))
    print(list(mydict.values()))

    mydict.update({3:'ni',4:'hao'})
    mydict[5] = 'zai'
    print(mydict)

def fun18():
    x = [3,5,7]
    x[len(x):] = [1,2]
    print(dict(zip([1,2],[3,4])))

'''
round()默认是四舍五入,默认只保留整数部分，不带小数位
'''
def fun19():
    c = 3.5415
    print(round(c))

if __name__=='__main__':

    fun111(1)

    print(str([1,2,3]))
    print(str((1,2,3)))
    print([1,2,3],sep=':')

    print('a'+'b')
    x = 'abcd'
    x.replace('a','bbb')
    print(x)

    x,y,z = [1,2,3]
    print(x,y,z)

    x = list(range(5))
    print(x)
    x.remove(3)
    print(x)
    print(x.index(4))

    l = [2,3,1]
    l = sorted(l)
    print(l)

    t = ([1],[2])
    t[0].append(3)
    print(t)

    sorted = 'ff'
    中文 = 'de'
    print(中文)
    v = 9999**9999
    print()

    print('''{v}''')

    print([1]+[2])
    print((1,)+(2,))

    fstr = "name:%s,age:%d" % ('guo',23)
    print(fstr)

    if 0:
        print('true')
    else:
        print('false')

    x = list(range(10))
    y = x[1:3]
    x.append(11)
    print(id(x))
    print(id(y))

    print(227/10%10**2)

    x = [ random.randint(0,100) for i in range(20) ]
    y = x[::2]
    y.sort(reverse=True)
    print(x)
    print(y)
    x[::2] =y
    print(x)

    b = (1,2,3)
    print(b[::])

    x = string.ascii_letters + string.digits;print(x,len(x));print("".join(random.sample(x,10)))

    z = 3+4j
    print(z.real)
    print(z.imag)

    count = 1
    while count:
        print('while')
        count-=1
    else:
        print('else')

    k = 0
    while True:
        s = input("")
        if s=='q':
            k+=1
            continue
        else:
            k+=2
            break
    print(k)




